'''
项目名称：产业园区管理运营平台
文件名称：数据初始化总控脚本
@Author: 王旭
@Contact: 1643959780@qq.com
@Created: 2025/06/28
@Version: V1.1

@Description:
本脚本是整个数据初始化流程的总入口。
它采用"先清理，后创建"的模式，确保数据生成的幂等性和稳定性。
首先，它会以与创建相反的顺序调用所有清理脚本，以规避外键约束。
然后，它会以正确的业务逻辑顺序调用所有创建脚本。
执行此脚本，即可一键为系统注入一套完整、真实且逻辑严谨的测试数据。

@Modifications:
- V1.0 (2025/06/28): 初始版本，实现对所有子脚本的顺序调用。
- V1.1 (2025/06/28): 重构为清理、创建分离模式，解决外键约束问题。
'''
import os
import sys

# --- Start: 动态添加项目根目录到 sys.path ---
current_script_path = os.path.abspath(__file__)
script_dir = os.path.dirname(current_script_path)
project_root = os.path.dirname(script_dir)
if project_root not in sys.path:
    sys.path.append(project_root)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'smartpark.settings')
import django
django.setup()
# --- End ---

# 导入各个模块的清理和创建函数
from init_personnel import clear_old_personnel_data, create_personnel_data
from init_assets import clear_old_assets_data, create_assets_data
from init_business import clear_old_business_data, create_business_data
from init_services import clear_old_services_data, create_services_data
from init_notification import clear_old_notification_data, create_all_notification_data
from init_finance import clear_old_finance_data, create_finance_data

def clear_all_data():
    """
    以创建的逆序清理所有数据，避免外键约束问题。
    """
    print("🚀 LAUNCHING TOTAL DATA CLEANUP PROCESS 🚀")
    # 顺序：财务 -> 通知 -> 服务 -> 业务 -> 资产 -> 人员
    clear_old_finance_data()
    clear_old_notification_data()
    clear_old_services_data()
    clear_old_business_data()
    clear_old_assets_data()
    clear_old_personnel_data()
    print("✅ ALL DATA CLEANED SUCCESSFULLY.\n")

def create_all_data():
    """
    以正确的业务逻辑顺序创建所有数据。
    """
    print("🚀 LAUNCHING TOTAL DATA CREATION PROCESS 🚀")
    # 顺序：人员 -> 资产 -> 业务 -> 服务 -> 通知 -> 财务
    create_personnel_data()
    create_assets_data()
    create_business_data()
    create_services_data()
    create_all_notification_data()
    create_finance_data()
    print("✅ ALL DATA CREATED SUCCESSFULLY.")

def main():
    """主函数，协调清理和创建过程"""
    clear_all_data()
    create_all_data()

if __name__ == "__main__":
    main() 